'libtgfx - Threaded Graphics library for FreeBASIC
'Copyright (C) 2013  Ebben Feagan <sir@mud.owlbox.net>
'
'This library is free software; you can redistribute it and/or
'modify it under the terms of the GNU Lesser General Public
'License as published by the Free Software Foundation; either
'version 2.1 of the License, or (at your option) any later version.
'
'This library is distributed in the hope that it will be useful,
'but WITHOUT ANY WARRANTY; without even the implied warranty of
'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
'Lesser General Public License for more details.
'
'You should have received a copy of the GNU Lesser General Public
'License along with this library; if not, write to the Free Software
'Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

#ifndef __LIB_TGFX_BI
#define __LIB_TGFX_BI -1

#ifndef DLL
#inclib "tgfx"
#endif

#ifdef DLL
    #undef DLL
    #include once "tcomm.bi"
    #define DLL
#else
    #include once "tcomm.bi"
#endif


''Namespace: tgfx
namespace tgfx

    const as integer VERSION_MAJOR = 0, VERSION_MINOR = 1, VERSION_PATCH = 0
    #define VERSION_STRING "libtgfx " & VERSION_MAJOR & "." & VERSION_MINOR & "." & VERSION_PATCH

    ''Enum: GFXmode
    ''Used with the <tgfx.window.init> function to choose a screen mode.
    enum GFXmode
        _8bit = 8
        _16bit = 16
        _24bit = 24
        _32bit = 32
    end enum

    ''Enum: bool
    ''Standard boolean type.
    enum bool
        false = 0
        true = not false
        invalid = 3
    end enum

    ''Class: Coord
    ''Simple Coordinate type.
    type Coord
        ''Var: x
        ''The x part of the coordinate
        x as integer
        ''Var: y
        ''The y part of the coordinate
        y as integer
        ''Sub: Default Constructor
        ''Makes a blank Coord
        declare constructor()
        ''Sub: Constructor
        ''Creates a Coord using the values specified.
        ''
        ''Parameters:
        ''x - the x part of the coordinate
        ''y - the y part of the coordinate
        ''
        declare constructor( byval _x as integer, byval _y as integer )
    end type

enum MCommand
    _MFALSE
    _MTRUE
    _MEXIT
    _MINIT
    _MTITLE
    _MSPTR
    _MLINE
    _MCIRCLE
    _MDRAW
    _MPRINT
    _MCLS
    _MLOCK
    _MULOCK
    _MGET
    _MPUT
    _MCREATE
    _MMSGET
    _MMSSET
    _MKEYG
    _MROUIT
end enum

    declare sub runOnUIThread( byval f as sub( byval as any ptr ), byval ud as any ptr = 0 )

end namespace

#include once "tgfx/window.bi"
#include once "tgfx/drawing.bi"
#include once "tgfx/image.bi"
#include once "tgfx/input-mouse.bi"
#include once "tgfx/input-keys.bi"

#endif
